package com.yuan.algorithms.acm201503;
/*
Problem Description
把一个偶数拆成两个不同素数的和，有几种拆法呢？
 

Input
输入包含一些正的偶数，其值不会超过10000，个数不会超过500，若遇0，则结束。
 

Output
对应每个偶数，输出其拆成不同素数的个数，每个结果占一行。
 

Sample Input
30
26
0

Sample Output
3
2
 */
import java.util.Scanner;

public class HD2098分拆素数和 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int[] map = new int[1300];//素数表
		map[0] = 2;
		int S = 1;//素数的个数
		for (int i = 3, k = 1; i <= 10000; i++) {
			if (judge(i)) {
				map[k++] = i;
				S++;
			}
		}
		while (sc.hasNext()) {
			int N = sc.nextInt();
			int sum = 0;
			if (N==0) {
				break;
			}
			for (int i = 0; i <= S; i++) {
				for (int j = 0; j <= S; j++) {
					if (map[i]+ map[j] > N  ) {
						break;
					}
					if ((map[i]+map[j]==N) && (i != j)) {
						//System.out.println(map[i]+" "+map[j]);
						sum++;
						break;
					}
				}
				
			}
			System.out.println(sum/2);//因为循环遍历重复了一遍，所以要除2
			
		}
	}
	
	
	public static boolean judge(int n) {
        if (n % 2 == 0) {
            return false;
        }
        for (int i = 3; i <= Math.sqrt(n); i += 2) {
            if (n % i == 0) {
                return false;
            }
        }
        return true;
    }
}
